package jfuzzyprincepless.negotiation;

import jfuzzyprincepless.negotiation.impl.UnmodifiableNegotiationContext;

/**
 * label interface
 * context of execution
 * store here variable values ...
 * @see jfuzzyprincepless.zarchive.algorithm.structure.ICommandConstruction#execute(IExecutionContext)
 *
 * context is expected to be negotiation in negotiation-commands
 * @see jfprincesstests.systemtests.TestInvestmentCompNegotiation.BarterNotNecessaryGoodsToInvestment#execute(IExecutionContext)
 */
public interface IExecutionContext { // TODO: remove it
	// DECIDE: if it is necessary to extend IExecutionContext from IREgistry -- it will help to avoid some casts
	IExecutionContext EMPTY =
		new UnmodifiableNegotiationContext(
			new DefaultNegotiationContext()
		);
}
